package com.deep.deepenterprise.task.schedule;

import com.deep.deepenterpise.common.gas.DrBottleTypeEnum;
import com.deep.deepenterpise.service.task.IDrTaskMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * @author xyz
 * @version 1.0
 * @title DrGasApiTask
 * @description
 * @create 2024/5/15 10:39
 */
@Component
@Slf4j
public class DrGasApiTask {

    @Resource
    private IDrTaskMethod iDrTaskMethod;

    /**
     * @Auth xyz
     * @Desc TODO 同步企业信息 每隔3分钟执行一次
     * @Time 10:41 2024/5/15
     */
    @Scheduled(cron = "0 0/5 * * * *")
    public void drAddUnit() {
        log.info("[政府端API-同步企业信息] Start");
        iDrTaskMethod.drAddUnitMethod(getMethodName("addDrUnit"));
        log.info("[政府端API-同步企业信息] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 同步人员信息，每隔30分钟执行一次
     * @Time 10:41 2024/5/15
     */
    @Scheduled(cron = "0 0/30 * * * *")
    public void drAddPersonnel() {
        log.info("[政府端API-同步人员信息] Start");
        iDrTaskMethod.drAddPersonnelMethod(getMethodName("addPersonnel"));
        log.info("[政府端API-同步人员信息] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 同步车辆信息，每隔3分钟执行一次
     * @Time 10:41 2024/5/15
     */
    @Scheduled(cron = "0 0/5 * * * *")
    public void drAddCart() {
        log.info("[政府端API-同步车辆信息] Start");
        iDrTaskMethod.drAddCartMethod(getMethodName("addCart"));
        log.info("[政府端API-同步车辆信息] End");
    }


    /**
     * @Auth xyz
     * @Desc TODO 同步钢瓶信息，每隔1分钟执行一次
     * @Time 10:41 2024/5/15
     */
    @Scheduled(cron = "0 0/1 * * * *")
    public void drAddGasCylinder() {
        log.info("[政府端API-同步钢瓶信息] Start");
        iDrTaskMethod.draAddGasCylinderMethod(getMethodName("addGasCylinder"));
        log.info("[政府端API-同步钢瓶信息] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 同步会员信息，每隔5分钟执行一次
     * @Time 15:58 2024/5/29
     */
    @Scheduled(cron = "0 0/5 * * * *")
    public void drAddMember() {
        log.info("[政府端API-同步会员信息] Start");
        iDrTaskMethod.drAddMemberMethod(getMethodName("addMember"));
        log.info("[政府端API-同步会员信息] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 充装记录上传
     * @Time 15:22 2024/5/15
     */
    //@Scheduled(cron = "0 0/3 * * * *")
    public void drAddRefillNotice() {
        log.info("[政府端API-同步充装记录] Start");
        iDrTaskMethod.drAddRefillNoticeMethod(getMethodName("addRefillNotice"));
        log.info("[政府端API-同步充装记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 充装记录后上传
     * @Time 15:22 2024/5/15
     */
    //@Scheduled(cron = "0 0/3 * * * *")
    public void drAddRefillAfter() {
        log.info("[政府端API-同步充装后记录] Start");
        iDrTaskMethod.drAddRefillAfterMethod(getMethodName("addRefillAfter"));
        log.info("[政府端API-同步充装后记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 充装记录前上传
     * @Time 15:22 2024/5/15
     */
    //@Scheduled(cron = "0 0/3 * * * *")
    public void drAddRefillBefore() {
        log.info("[政府端API-同步充装前记录] Start");
        iDrTaskMethod.drAddRefillBeforeMethod(getMethodName("addRefillBefore"));
        log.info("[政府端API-同步充装前记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 随瓶安检记录上传
     * @Time 15:22 2024/5/15
     */
    @Scheduled(cron = "0 0/1 * * * *")
    public void drAddCheckBottle() {
        log.info("[政府端API-同步随瓶安检记录] Start");
        iDrTaskMethod.drAddCheckBottleMethod(getMethodName("addCheckBottle"));
        log.info("[政府端API-同步随瓶安检记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 入户安检记录上传
     * @Time 08:40 2024/6/14
     */
    @Scheduled(cron = "0 0/1 * * * *")
    public void drAddCheckHouse() {
        log.info("[政府端API-同步入户安检记录] Start");
        iDrTaskMethod.drAddCheckHouseMethod(getMethodName("addCheckHouse"));
        log.info("[政府端API-同步入户安检记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 充装站气瓶出库
     * @Time 11:20 2024/5/20
     */
    @Scheduled(cron = "0 0/3 * * * *")
    public void drAddFillingBottleOut() {
        log.info("[政府端API-同步充装站气瓶出库/门店气瓶入库记录] Start");
        iDrTaskMethod.drAddBottleLogMethod(getMethodName("addFillingBottleOut"),
                DrBottleTypeEnum.RECEIVE_BOTTLE_SHOP.getDrType());
        log.info("[政府端API-同步充装站气瓶出库/门店气瓶入库记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 充装站气瓶入库记录上传
     * @Time 11:20 2024/5/20
     */
    @Scheduled(cron = "0 0/3 * * * *")
    public void drAddFillingBottleIn() {
        log.info("[政府端API-同步充装站气瓶入库记录] Start");
        iDrTaskMethod.drAddBottleLogMethod(getMethodName("addFillingBottleIn"),
                DrBottleTypeEnum.RETURN_BOTTLE.getDrType());
        log.info("[政府端API-同步充装站气瓶入库记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 门店气瓶入库库记录上传
     * @Time 11:20 2024/5/20
     */
    @Scheduled(cron = "0 0/3 * * * *")
    public void drAddStoreBottleIn() {
        log.info("[政府端API-同步门店气瓶入库记录] Start");
        iDrTaskMethod.drAddBottleLogMethod(getMethodName("addStoreBottleIn"),
                DrBottleTypeEnum.RETURN_GAS_WORKER_BOTTLE.getDrType());
        log.info("[政府端API-同步门店气瓶入库记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 门店气瓶出库记录上传
     * @Time 11:20 2024/5/20
     */
    @Scheduled(cron = "0 0/3 * * * *")
    public void drAddStoreBottleOut() {
        log.info("[政府端API-同步门店气瓶出库记录] Start");
        iDrTaskMethod.drAddBottleLogMethod(getMethodName("addStoreBottleOut"),
                DrBottleTypeEnum.RECEIVE_BOTTLE_WORKER.getDrType());
        log.info("[政府端API-同步门店气瓶出库记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 同步正常、退瓶订单信息 每隔1分钟执行一次
     * @Time 10:41 2024/5/15
     */
    @Scheduled(cron = "0 0/1 * * * *")
    public void drAddOrder() {
        log.info("[政府端API-同步订单信息] Start");
        iDrTaskMethod.drAddOrderMethod(getMethodName("addOrder"));
        log.info("[政府端API-同步订单信息] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 同步异常订单信息 每隔10分钟执行一次
     * @Time 10:41 2024/5/15
     */
    @Scheduled(cron = "0 0/10 * * * *")
    public void drAddOrderError() {
        log.info("[政府端API-同步问题订单信息] Start");
        iDrTaskMethod.drAddOrderErrorMethod(getMethodName("addOrderError"));
        log.info("[政府端API-同步问题订单信息] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 同步钢瓶流转记录 每隔1分钟执行一次
     * @Time 10:41 2024/5/15
     */
    @Scheduled(cron = "0 0/1 * * * *")
    public void drAddBottleLoopLog() {
        log.info("[政府端API-同步钢瓶流转记录] Start");
        iDrTaskMethod.drAddBottleLoopLogMethod(getMethodName("addBottleLoopLog"));
        log.info("[政府端API-同步钢瓶流转记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 同步隐患记录
     * @Time 13:01 2024/6/26
     */
    @Scheduled(cron = "0 0/5 * * * *")
    public void drAddDanger() {
        log.info("[政府端API-同步隐患记录] Start");
        iDrTaskMethod.drAddDangerMethod(getMethodName("addDanger"));
        log.info("[政府端API-同步隐患记录] End");
    }

    /**
     * @Auth xyz
     * @Desc TODO 同步检查项 每天0点执行一次
     * @Time 16:21 2024/6/26
     */
    @Scheduled(cron = "0 0 0 * * *")
    public void drCheckItem() {
        log.info("[政府端API-同步检查项] Start");
        iDrTaskMethod.drCheckItemMethod(getMethodName("updateCheckItem"));
        log.info("[政府端API-同步检查项] End");
    }

    /**
     * @Auth xyz
     * @Desc //TODO 同步评价记录 每隔5分钟执行一次
     * @Time 10:20 2024/6/29
     */
    @Scheduled(cron = "0 0/5 * * * *")
    public void drAddEva() {
        log.info("[政府端API-同步评价记录] Start");
        iDrTaskMethod.drAddEvaMethod(getMethodName("addEva"));
        log.info("[政府端API-同步评价记录] End");
    }

    /**
     * @return java.lang.String
     * @Auth xyz
     * @Desc TODO 获取方法名称
     * @Time 11:36 2024/5/15
     * @Param [method]
     */
    private String getMethodName(String method) {
        return DrGasApiTask.class.getSimpleName() + "-" + method;
    }
}
